--- title: "5、跑步锻炼" created: 2025-11-28 tags: - 算法 --- # 5、跑步锻炼 ## 题目 [跑步锻炼](https://www.lanqiao.cn/paper/3836/problem/597/) ![[image-aa0941a3.png]] ## 思路分析 组合拳一套 按日期枚举 每天加1km 碰到1号和星期一 而外加1km 1号比较好判断 星期一就麻烦点 可以做个计数 因为第一天是星期六 要隔三天是星期一 所以天数模上7 如果等于3 就说明是星期一 ![[image-98c955a5.png]] ## 代码实现 ```cpp #include using namespace std; int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; bool is_leap(int y){ return y%100 && y%4==0 || y%400==0; } int getdays(int y,int m){ return days[m]+(m==2 && is_leap(y)); } void nextday(int &y,int &m,int &d){ d++; if(d>getdays(y,m)){ d=1; m++; if(m>12){ m=1; y++; } } } int main() { int cury=2000,curm=1,curd=1; int cnt=1; int sum=0; while((cury<2020) || (cury==2020 && curm<10) || (cury==2020 && curm==10 && curd<2)){ if(curd==1 || cnt%7==3){ sum++; } sum++; nextday(cury,curm,curd); cnt++; } cout<